package upc.edu.business;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import upc.edu.bean.Rol;

public class AdmRol {

	public List<Rol> roles;

	public AdmRol() {
		this.roles = new ArrayList<Rol>();
	}

	public void agregarRol(Rol rol) {
		roles.add(rol);
	}

	public void eliminaRol(Rol rol) {
		for (Rol r : roles) {
			if (r.getIdRol() == rol.getIdRol()) {
				roles.remove(rol);
			}
		}
	}

	public Rol buscarRol(int idRol) {
		for (Rol rol : roles) {
			if (rol.getIdRol() == idRol)
				return rol;
		}
		return null;
	}

	public void modificaRol(Rol rol) {
		try {
			for (Rol r : roles) {
				if(r.getIdRol() == rol.getIdRol()){
					r = rol;
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void agregaPermiso(Integer idRol, Integer idModulo, String permiso) {
		try {
			for (Rol rol : roles) {
				if (rol.getIdRol() == idRol) {
					Map<String, Object> permisos = new HashMap<String, Object>();
					permisos.put("modulo", idModulo);
					permisos.put("permiso", permiso);
					rol.getPermisos().add(permisos);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void eliminaPermiso(Integer idRol, Integer idModulo, String permiso) {
		try {
			for (Rol rol : roles) {
				if (rol.getIdRol() == idRol) {
					for (Map<String, Object> permisos : (ArrayList<Map<String, Object>>) rol
							.getPermisos()) {
						if ((Integer) permisos.get("modulo") == idModulo
								&& ((String) permisos.get("permiso"))
										.equalsIgnoreCase(permiso)) {
							((ArrayList<Map<String, Object>>) rol.getPermisos())
									.remove(permisos);
							break;
						}
					}
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
